- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин
Шрифт:
Интервал:
Закладка:
lly (новая координата по оси Y левого нижнего угла изображения),
lrx (новая координата по оси Х правого нижнего угла изображения),
lry (новая координата по оси Y правого нижнего угла изображения),
ulx (новая координата по оси Х левого верхнего угла изображения),
uly (новая координата по оси Y левого верхнего угла изображения),
urx (новая координата по оси Х правого верхнего угла изображения),
ury (новая координата по оси Y правого верхнего угла изображения).
Свойство input класса PerspectiveTransform может определять в качестве входа другой эффект Effect, создавая, таким образом, цепочку эффектов.
Приведенный здесь код демонстрирует панель ScrollPane, содержащую изображения с PerspectiveTransform-эффектом.
Здесь мы создаем набор изображений и эффект перспективы.
Для эффекта мы устанавливаем измененные координаты сторон изображения и присоединяем эффект к каждому изображению.
Reflection-эффект обеспечивает эффект отражения исходного изображения узла Node.
Свойства topOpacity (от 0.0 до 1.0, по умолчанию 0.5) и bottomOpacity (от 0.0 до 1.0, по умолчанию 0.0) класса Reflection определяют прозрачность верхнего и нижнего края отражения.
Свойство topOffset определяет интервал между краями изображения и его отражения,
а свойство fraction – долю изображения, видимую в отражении (от 0.0 до 1.0, по умолчанию 0.75).
Свойство input класса Reflection может определять в качестве входа другой эффект Effect, создавая, таким образом, цепочку эффектов.
Приведенный здесь код демонстрирует узел Text с цепочкой эффектов, состоящей из Reflection-эффекта и InnerShadow-эффекта и создающей иллюзию отражения объемного текста в плоскости, представленной узлом Rectangle с PerspectiveTransform-эффектом.
Здесь мы создаем прямоугольник и заполняем его градиентом.
Затем мы создаем эффект перспективы и применяем его к прямоугольнику.
Далее мы создаем текст и два эффекта – внутреннюю тень и отражение, из эффектов создаем цепочку эффектов и применяем эту цепочку к тексту.
SepiaTone-эффект обеспечивает эффект старения исходного изображения узла Node.
Уровень старения исходного изображения определяется свойством level (от 0.0 до 1.0, по умолчанию 1.0) класса SepiaTone.
Свойство input класса SepiaTone может определять в качестве входа другой эффект Effect, создавая, таким образом, цепочку эффектов.
Приведенный здесь код демонстрирует панель ScrollPane, содержащую изображения с цепочкой эффектов, состоящей из PerspectiveTransform-эффекта и SepiaTone-эффекта.
Трансформации и анимации
Начнем с анимаций.
Платформа JavaFX обеспечивает создание двух видов анимации – анимацию по ключевым кадрам и анимацию со встроенной временной шкалой.
JavaFX-анимацию представляет пакет javafx.animation, базовым классом которого является класс Animation.
Класс Animation расширяется классами Timeline и Transition, при этом класс Timeline представляет анимацию по ключевым кадрам, а класс Transition – анимацию со встроенной временной шкалой.
Класс Animation имеет набор свойств, позволяющих управлять скоростью и направлением анимации, задержкой и количеством циклов анимации, устанавливать автореверс анимации, считывать статус анимации, обрабатывать завершение анимации и др.
Скорость и направление анимации можно установить с помощью метода setRate,
задержку анимации – с помощью метода setDelay,
количество циклов анимации – методом setCycleCount,
автореверс анимации – методом setAutoReverse,
считать статус PAUSED, RUNNING или STOPPED анимации – методом getStatus,
установить обработчик завершения анимации – методом setOnFinished.
Также класс Animation предоставляет методы управления жизненным циклом анимации:
jumpTo – переход анимации к указанной позиции на временной шкале.
playFrom – запуск анимации, начиная с указанной позиции на временной шкале.
play – запуск анимации с текущей позиции на временной шкале.
playFromStart – запуск анимации с первоначальной позиции на временной шкале.
stop – остановка анимации.
pause – пауза анимации.
Анимация по ключевым кадрам позволяет создать видимое изменение значения любого JavaFX-свойства за определенный промежуток времени с помощью класса Timeline.
Экземпляр класса Timeline можно создать с помощью набора конструкторов, позволяющих установить частоту кадров и набор ключевых кадров анимации.
Набор ключевых кадров Timeline-анимации можно заполнить методом getKeyFrames.addAll, а остановить Timeline-анимацию и вернуть ее в первоначальную позицию – методом stop.
Ключевой кадр Timeline-анимации представлен классом KeyFrame и определяет изменения значений JavaFX-свойств за определенный промежуток времени.
Экземпляр класса KeyFrame можно создать с помощью набора конструкторов, позволяющих установить время воспроизведения ключевого кадра, имя ключевого кадра, обработчик окончания ключевого кадра и набор изменений значений JavaFX-свойств.
Изменение значения JavaFX-свойства представлено классом KeyValue, экземпляр которого можно создать с помощью конструкторов, позволяющих установить изменяемое JavaFX-свойство, его конечное значение в результате анимации и способ его изменения в течение анимации.
Способ изменения значения JavaFX-свойства в течение анимации представлен классом Interpolator, имеющим статические поля:
DISCRETE – дискретное изменение значения JavaFX-свойства, при которой значение остается начальным до окончания временного интервала, когда значение становится конечным.
LINEAR (по умолчанию) – линейное изменение значения JavaFX-свойства, при которой значение определяется по формуле startValue + (endValue – startValue) * fraction.
EASE_BOTH – используется величина 0.2 для прироста и уменьшения значения JavaFX-свойства.
EASE_IN – используется величина 0.2 для прироста значения JavaFX-свойства.
EASE_OUT – используется величина 0.2 для уменьшения значения JavaFX-свойства.
Кроме того, можно создать пользовательский класс Interpolator с переопределением его методов, описывающих изменение значения JavaFX-свойства.
Transition-анимация со встроенной временной шкалой также использует объект Interpolator в качестве значения свойства interpolator класса Transition.
Таким образом, анимацию изменения значений нескольких JavaFX-свойств можно создать двумя способами.
Первый способ – это создание одного ключевого кадра KeyFrame и добавление в него несколько объектов KeyValue.
Другой способ – это создание отдельных ключевых кадров KeyFrame для каждого из объектов KeyValue и добавление их в Timeline-анимацию.
Transition-анимация со встроенной временной шкалой, в отличие от Timeline-анимации, описывает изменение во времени ограниченного набора JavaFX-свойств, таких как прозрачность, пространственное положение, вращение и масштабирование узла графа сцены, а также цвет заполнения и цвет контура формы Shape.
Анимация прозрачности узла графа сцены создается с помощью класса FadeTransition, имеющим свойства byValue (шаг изменения свойства прозрачности), duration (продолжительность анимации), fromValue (начальное значение прозрачности), node (целевой узел графа сцены данной анимации) и toValue (конечное значение прозрачности).
Анимация пространственного положения узла графа сцены создается с помощью классов PathTransition и TranslateTransition.
Класс PathTransition позволяет создавать перемещение графического объекта вдоль кривой с помощью свойств duration (продолжительность анимации), orientation (NONE – ориентация графического объекта не изменяется или ORTHOGONAL_TO_TANGENT – графический объект перпендикулярен относительно кривой своего перемещения) и path (объект Shape, представляющий кривую перемещения).
Класс TranslateTransition позволяет создавать перемещение графического объекта из одной 3D точки в другую 3D точку с помощью свойств node (целевой узел для анимации), duration (продолжительность анимации), fromX (начальная координата перемещения по оси х), fromY (начальная координата перемещения по оси у), fromZ (начальная координата перемещения по оси z), toX (конечная координата перемещения по оси х), toY (конечная координата перемещения по оси у), toZ (конечная координата перемещения по оси z), byX (шаг перемещения по оси х), byY (шаг перемещения по оси у) и byZ (шаг перемещения по оси z).
Анимация вращения узла графа сцены создается с помощью класса RotateTransition, имеющим свойства node (целевой узел анимации), duration (продолжительность анимации), axis (ось вращения javafx.geometry. Point3D), fromAngle (начальный угол вращения), toAngle (конечный угол вращения) и byAngle (шаг вращения).
Анимация масштабирования узла графа сцены создается с помощью класса ScaleTransition, имеющим свойства node (целевой узел анимации),

